<img src="https://github.com/joshbeitler/mirus/raw/master/docs/img/logo.png" alt="Mirus Logo" height="63px" width="444px" />
=====

Mirus is a hobby operating system written in C# and based off of the Cosmos toolkit.  It is one of the oldest operating systems of its type, with initial development beginning in early 2009.  Though it is the oldest, it has only recently been undergoing heavy development and (steady ) releases.  It is written mainly by Joshua Beitler, and is a member of the [Open Cosmos Alliance (OCA)](http://opencosmosalliance.tk).

Please note that Mirus is undergoing heavy development, and is nowhere near stable for the purposes in which it is intended to be used.  We'd advise that you check the [wiki](https://github.com/joshbeitler/mirus/wiki) for information on stability and project goals.

### IRC ###
For project discussion, help building or getting help with running, please join us in `#mirus` on Freenode (`irc.freenode.net`).  For discussion about the C# Open Source Operating System, join `#cosmos-dev` on Freenode (`irc.freenode.net`).

Features
-----
### Kernel Features ###
* Microkernel architecture
* Secure driver subsystem
* Semi-self healing

### Drivers ###
* Full ACPI support

### Userspace ###
* Comprehensive test suite and test engine

Screenshots
-----
None at the moment, as there is no UI to present.

Testing
-----
### Emulation ###
The best way to test Mirus is through a virtual machine (like VMWare, Virtualbox or VirtualPC).  Most Mirus releases have virtual machine files for common virtual machines, along with instructions for using them.  You may also download ISO disk images of Mirus to burn to a disk or boot in your own virtual machine configuration.  When creating a new virtual machine, make sure to enter the settings and set the CD/DVD drive to hold the ISO file that came with the Mirus release you are using.

### Real Hardware ###
Booting Mirus on real hardware is easy.  Obtain an ISO disk image of Mirus (via the Downloads page or via building) and open it with your disk burner.  Versions of Windows above Windows XP have a built in ISO burner.  For Linux systems, you will need to either obtain a GUI front-end for your burner, or do it via the command line with either `dd` or `cdrecord`.

Once burnt, insert the CD or DVD into your optical disk drive and restart your computer.  If not already done, enter your BIOS config by pressing the setup key (usually F5 or Delete) at the motherboard splash screen, and set your optical drive above your hard drive in the boot order.  Mirus will boot thereafter.

### Getting Help ###
Mirus includes an offline version of core documentation regarding the source code, included in the `docs` directory.  The best way to get information is on the [Wiki](https://github.com/joshbeitler/mirus/wiki).  If your question is still not answered, consider asking on IRC or emailing the developer.

### Reporting Bugs ###
Mirus uses the GitHub issue tracker, which is built on Ruby (<3).  You may access it to report bugs, request features, or make something aware to the developers by clicking [here](https://github.com/joshbeitler/mirus/issues) or "Issues" on the tab-bar at the top of the page.

Dependencies
-----
### Mirus Dependencies ###
* Cosmos *Dev Kit* (avalible in the `cosmos` directory of the `master` branch)
* Mirus build tool
* Visual Studio 2010 (any edition)
	* Express users must install the [Visual Studio 2010 Integrated Shell Runtime](http://www.microsoft.com/en-us/download/details.aspx?id=115)

### Cosmos Dependencies ###
* VMWare (Player or Workstation)
* [VMWare VIX API 1.11](http://www.vmware.com/download/download.do?downloadGroup=VIX-API-1110)

### Cosmos ###
Cosmos is a toolkit of self-described "operating system legos" that allows you to build an operating system in any .NET compliant language. Mirus uses its compiler, IL2CPU, to compile CIL to native code.

Much of the funtions provided in the native Cosmos toolkit have or are going to be rewritten, leaving Mirus only using Cosmos for the development integration (Visual Studio), and the compiler.

You can find out more about Cosmos on its project [homepage](http://cosmos.codeplex.com).

System Components
-----
* `Cosmos`
	* Cosmos projects
* `Kernel`
	* Basic kernel code
* `Kernel.Backbone`
	* The code for the backbone system
* `Kernel.Paging`
	* Paging and multithreading code
* `Kernel.Mem`
	* Memory management
* `System.Minidrivers`
	* Minidriver code (RAW FS, Screen IO, Keyboard, etc)
* `Corelib`
	* Core system library
* `Corelib.Text`
	* Text handling library
* `Corelib.Math`
	* Math library

Building
-----
To build Mirus, open the `Mirus.sln` file in the `src` directory of the `Master` branch.  From the Build menu in Visual Studio, press `Build Solution`.  Once it completes, hit the debug button, and VMware will open and boot Mirus.  If you run into problems with building, make sure that the build configuration matches that listed in the docs, and that all dependencies are met.

Project News
-----
See the [NEWS](https://github.com/joshbeitler/mirus/blob/master/NEWS.md) file for full news information.
### 12/13/12 ###
* Updated Wiki and License docs
* Initial Source Commit

### 12/12/12 ###
* Project switch to GitHub begun.

License
-----
Mirus is licensed as open-source software through the GPLv3 License.  Full License information can be found in the [LICENSE](https://github.com/joshbeitler/mirus/blob/master/LICENSE.md) file.

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>.